home *** CD-ROM | disk | FTP | other *** search
/ BBS Toolkit / BBS Toolkit.iso / rbbs_pc / 17basm.zip / 10-NET.ASM next >
Assembly Source File  |  1987-03-07  |  3KB  |  67 lines

  1. CSEG     SEGMENT BYTE PUBLIC 'CODE'
  2.          ASSUME  CS:CSEG,DS:CSEG,ES:CSEG,SS:CSEG
  3.          PUBLIC  LPLK10
  4.          PUBLIC  LOK10
  5.          PUBLIC  UNLOK10
  6. LOOPLOCK EQU     11H               ; 3COM LOCK WITH DELAY
  7. LOCK     EQU     12H               ; 3COM LOCK WITH RETURN
  8. UNLOCK   EQU     13H               ; 3COM UNLOCK
  9. REQUEST  DB      ?                 ; TYPE OF REQUEST
  10. DRIVE    DB      ?                 ; INPUT DRIVE NUMBER
  11. DELAY    DW      ?                 ; DELAY TIME
  12. ENET     DW      0                 ; DUMMY ETHERNET ADDRESS
  13. LENLOK   DW      ?                 ; LENGTH OF LOCK NAME
  14. POINTER  DW      ?                 ; POINTER TO LOCK NAME
  15. LOCKNAME DB      31 DUP(?)         ; INPUT LOCK NAME
  16.          DB      0                 ; TERMINATOR
  17. LPLK10   PROC    FAR
  18.          MOV     CS:REQUEST,LOOPLOCK
  19.          MOV     CS:DELAY,300      ; WAIT 5 MINUTES FOR LOCK
  20.          JMP     PROCESS
  21. LPLK10   ENDP
  22. LOK10    PROC    FAR
  23.          MOV     CS:REQUEST,LOCK
  24.          MOV     CS:DELAY,10       ; WAIT 10 SECONDS FOR LOCK
  25.          JMP     PROCESS
  26. LOK10    ENDP
  27. UNLOK10  PROC    FAR
  28.          MOV     CS:REQUEST,UNLOCK
  29.          MOV     CS:DELAY,0
  30. PROCESS:
  31.          PUSH    BP                ; SAVE BP
  32.          MOV     BP,SP             ; SAVE SP INTO BP FOR PARM ADDRESSING
  33.          PUSH    DS                ; SAVE BASIC'S DATA SEGMENT
  34.          PUSH    ES                ; SAVE BASIC'S EXTRA SEGMENT
  35.          MOV     BX,[BP+8]         ; GET ADDRESS OF STRING DESCRIPTOR
  36.          MOV     DX,[BX+2]         ; GET ADDRESS OF STRING
  37.          MOV     CS:POINTER,DX     ; SAVE POINTER TO STRING
  38.          MOV     CX,[BX]           ; GET LENGTH OF STRING
  39.          MOV     CS:LENLOK,CX      ; SAVE LENGTH OF THE STRING
  40.          MOV     BX,[BP+10]        ; GET ADDRESS OF DRIVE NUMBER
  41.          MOV     AL,[BX]           ; GET LOW ORDER BYTE OF DRIVE ADDRESS
  42.          INC     AX                ; ADJUST DRIVE NUMBER
  43.          MOV     CS:DRIVE,AL       ; SAVE THE DRIVE NUMBER
  44.          PUSH    CS                ; MOV CS TO ES VIA STACK
  45.          POP     ES                ; TARGET IS IN OUR CSEG
  46.          MOV     SI,DX             ; OFFSET OF BASIC'S STRING
  47.          MOV     DI,OFFSET LOCKNAME; OFFSET OF WORK AREA
  48.          CLD                       ; START FROM THE BOTTOM
  49.          REP     MOVSB             ; COPY BASIC'S STRING TO OUR WORK AREA
  50.          PUSH    CS                ; MOV CS TO DS VIA STACK
  51.          POP     DS                ; OUR CSEG SEGMENT INTO DS
  52.          MOV     BX,OFFSET LOCKNAME+2 ; POINT TO NEW NAME
  53.          MOV     SI,OFFSET ENET    ; POINT TO DUMMY ETHERNET ADDRESS
  54.          MOV     AL,DRIVE          ; GET DRIVE FOR LOCK
  55.          MOV     AH,REQUEST        ; RETRIEVE LOCK REQUEST TYPE
  56.          MOV     DX,DELAY          ; 3COM DELAY TIME
  57.          INT     60H               ; CALL 3COM LOCK MANAGER
  58.          POP     ES                ; GET BACK BASIC'S EXTRA SEGMENT
  59.          POP     DS                ; GET BACK BASIC'S DATA SEGMENT
  60.          MOV     DI,[BP+6]         ; GET ADDRESS OF RESULT VARIABLE
  61.          MOV     [DI],AL           ; STORE RETURN CODE FROM LOCK MANAGER
  62.          POP     BP
  63.          RET     6
  64. UNLOK10  ENDP
  65. CSEG     ENDS
  66.          END
  67.